<%@ include file="/common/taglibs.jsp"%>
<!--分页查询共用的页面-->
<%@ include file="/common/common.jsp"%>
<%@ include file="/common/dateUtil.jsp"%>
<%@ page language="java" pageEncoding="UTF-8"%>

<head>
<!--添加弹层效果和layui-->
<script type="text/javascript" src="<%=jsPath%>/layer/layer.js"></script>

<!--地图所需-->
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=GT3YSZNuqHkwbGyAY4maPaVw"></script>

<style>

		/*
布局样式
*/
html body{
    height:100%;
    width:100%;
    overflow: auto;
}

/* 左侧地图区域*/
.mapDiv{
    width:27%;
    height:100%;
    overflow: auto;
}

/*中间上侧信息*/
.topMsg{
    height:13px;
    text-align: left;
    overflow: hidden;
    font-size: 10px;
}
/*中间附件显示区域*/
.imgsMiddle{
    height: 100%;
    text-align: center;
    background-color: black;
    overflow: auto;
}

/*按钮区域*/
.btnTd{
    height:26px;
}
.btnTd input{
    width:65px;
    height: 25px;
    text-align: center;
    font-size: 10px;
}

/*右上报警记录数据列表区*/
.rightTop{
    width:290px;
    height: 100%;
    margin-right: 0px;
    overflow: auto;
}





/*详细信息显示框*/
.leftBottom{
    /* width:100%; */
    height: 130px;
    overflow: auto;
}



/*显示区域的样式*/
.imgDiv{
	width:350px;
	height:210px;
	text-align: center;
}

.imgDiv img{
    max-width: 350px;
	max-height: 210px;
     
}



</style>

	<script>
		/*
功能：
    显示单条adas报警信息的基本信息
    显示单条adas报警信息中所有记录的详细信息
    单击某条记录，显示记录的详细信息，显示记录的图片和视频信息，并显示进度条展示显示进度
    选中记录，可以进行报警处理操作
    选中多条记录，可以进行批量处理操作
    选中记录或者多条记录，可以进行证据保存工作

功能模块：
    初始化页面：
        基本控件展示：左上角记录列表，左下角功能按钮，右上角基本信息显示，右侧中间图片和视频显示，右侧下方记录详细信息显示
    获取数据
        页面加载完成后请求报警基本信息数据
        显示基本信息,点击基本信息链接在右下方展示详细信息
        页面加载完成后请求详细报警记录信息
        获取数据后，把报警记录信息显示到左上侧记录列表datagrid中
        点击列表中的某条记录或者点击下一条上一条等按钮获取某条记录后，右下角展示详细信息，
            请求右侧图片信息，获取数据后，显示到右侧图片信息区
    报警处理：
        点击报警处理相关的按钮，弹出报警处理窗口，获取所有勾选的记录，用户设置报警处理信息后点击处理
        发送处理请求，传递获取到的处理参数，收到返回信息，右上角显示信息，提示结果
    
    
    辅助功能：
        提示信息方法
*/



//////////////////////////////////////////////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////
//测试地图控件



//////////////////////////////////////////////////
//////////////////////////////////////////////////
//////////////////////////////////////////////////

/*
初始化页面

*/
try {
    var globalConfig = { webPath: "<%=ApplicationPath%>" };
    // console.log(globalConfig);
} catch (error) {
    console.error("获取全局变量错误");
}

var myBMap = {};//定义map全局变量
var mapOpts = {//定义信息窗口变量    
    width : 270,     // 信息窗口宽度    
    height: 180,     //信息窗口高度  
    // title : "报警信息"  // 信息窗口标题   
} 
var params = {};//参数变量
var adasAlarmBasicInfo = {};//报警基本信息
var adasAttachmentList = {};//报警记录及附件信息数据
var timerName = "getAttachmentsTimer";//设置定时器名称
var alarmTotalNum = 0;

//定义datagrid
$(function(){
    $("#oneAdasAlarmData").datagrid({
        width:"100%",
		height:"100%",
		pagination:false,
		singleSelect:true,
		rownumbers:true,
		striped:true,
		checkOnSelect: false,
        selectOnCheck: false,
        onClickRow:function(rowIndex, rowData){//行点击事件
            //设置该行单选,并勾选
            setChecked(rowIndex);
        },
        onSelect:function(rowIndex, rowData){//行选择事件
			
            // showMsg("正在查看第"+(rowIndex+1)+"行记录...");
            //设置该行单选,并勾选
            setChecked(rowIndex);

            //选中某一行，查看资源
            // showDetailsMsg();
			// console.log("查看第"+(rowIndex+1)+"行");
		},
        onDblClickRow:function(rowIndex,rowData){//双击事件
            //设置该行单选,并勾选
            setChecked(rowIndex);
            showDetailsMsg();//查看资源
            
        }
    });
    //隐藏控件
    $("#ProgSpan").hide();


    //定义窗口关闭事件
    window.onbeforeunload= function(event){
        console.log("停止定时器");
        $("body").stopTime(timerName); 
    }
});

//设置勾选行
function setChecked(rowIndex){
    //设置该行单选,并勾选
    $("#oneAdasAlarmData").datagrid("uncheckAll");
    $("#oneAdasAlarmData").datagrid("checkRow",rowIndex);
}


/*
显示车辆坐标在地图上
*/
function showVehicleOnmap(rowData){
    console.log("准备显示车辆到地图上");
    console.log(rowData);
    var point = new BMap.Point(rowData.longitude,rowData.latitude);
    myBMap.centerAndZoom(point,11);//定位中心

    //添加标注
    var marker = new BMap.Marker(point);
    myBMap.addOverlay(marker);

    
    var strTemp =getMapInfo(rowData); 
    
    //定义地图信息窗口
    var infoWindow = new BMap.InfoWindow(strTemp,mapOpts);
    //打开信息窗口
    myBMap.openInfoWindow(infoWindow,point);
}

//通过行数据，返回地图显示窗口中的信息
function getMapInfo(rowData){
    var strTemp = '';

    //显示基本信息
    var processedTime = (rowData.processedTime == undefined?"空":rowData.processedTime);
    var processedUserName= (rowData.processedUserName == undefined?"空":rowData.processedUserName);
    var processedRemarks= (rowData.processedRemarks == undefined?"空":rowData.processedRemarks);
    var location = (rowData.location == undefined ? "空" : rowData.location);

    strTemp += "报警时间："+Utility.getTimeTime(rowData.alarmTime)+"<br/>";
    strTemp += "报警地点："+location+"<br/>";
    strTemp += "处理方式："+getProcessedTypeName(rowData.processed)+"<br/>";
    strTemp += "处理时间："+processedTime+"<br/>";
    strTemp += "&nbsp;&nbsp;&nbsp;经手人："+processedUserName+"<br/>";
    strTemp += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;备注："+processedRemarks+"<br/>";

    return strTemp;
}



/*
页面加载完成后执行

1.从服务器请求该报警的基本信息
2.从服务器请求所有报警记录数据
3.等待报警记录数据加载完成之后，请求所有记录附件信息

*/


$(document).ready(function(){
    //加载地图
    try {
        myBMap = new BMap.Map("mapDiv");
        var point = new BMap.Point(117.1821553003, 34.2199847740);
        myBMap.centerAndZoom(point, 15);
        //鼠标滚轮缩放
        myBMap.enableScrollWheelZoom(true);
        //添加缩放控件
        myBMap.addControl(new BMap.NavigationControl());
        //添加左下角标尺控件
        // myBMap.addControl(new BMap.ScaleControl());
    } catch (error) {
        console.error("加载地图错误：" + error);
    }
    
    $("body").oneTime("500ms","mapTime",function(){
    });
    


    showProg();//显示进度条

    getOneAdasAlarmBasicInfo();//获取基本信息


    getAdasAlarmRecords();//获取所有记录

    //键盘按下事件
    document.onkeydown = function(ev){
        if(ev.keyCode == 40){
            //向下按键
            showNextRow(1);
            return;
        }else if(ev.keyCode == 38){
            //向上按键
            showNextRow(-1);
            return;
        }
        // console.log("按键按下");
        // console.log("key="+ev.key);
        // console.log("keykode="+ev.keyCode);
        // console.log(ev);
    }


});
//////////////////////////////////////////////////
//////////////////////////////////////////////////初始化页面结束
//////////////////////////////////////////////////


//获取本条报警基本数据信息
function getOneAdasAlarmBasicInfo(){

    params = {};
    params.alarmIndex = "${alarmIndex}";
    var url = "<%=ApplicationPath%>/activeSafeAlarm/getOneAdasAlarmFromAlarm.action";//请求地址
    Utility.getAjaxData(url,JSON.stringify(params),function(data){
        console.log("接收到主动安全报警基本信息数据");
        // console.log(data);
        if(data != null){
            if (data.length > 0) {
                adasAlarmBasicInfo = data[0];
                showBasicInfoToTop();//显示信息到页面
                // console.log(adasAlarmBasicInfo);
            }else{
                showMsg("没有查询到报警数据");
            }
            
        }else{
            showMsg("查询报警失败！");
        }
    });
}


/*
获取报警记录所有数据
请求数据成功后，
    1.提示消息
    2.隐藏遮罩
    3.绑定数据
    4.设置显示第一页
    5.获取所有记录的附件信息
*/
function getAdasAlarmRecords(){
    //显示提示信息，设置遮罩
    showMsg("正在请求报警详细信息...");
    Utility.showLoading("正在请求报警数据详细信息...");
    params = {};
    params.alarmIndex = "${alarmIndex}";
    var url = "<%=ApplicationPath%>/activeSafeAlarm/getAdasAlarmListData.action";//请求地址
    Utility.getAjaxData(url,JSON.stringify(params),function(data){
        // console.log("接收到查询数据");
        // showMsg("查询完成!");
        // console.log(data);

        showMsg("获取报警详细信息成功！");//显示提示消息
        if(data != null){
            if(data.length > 0 ){//查询到信息
                //设置报警记录数量到变量中
                alarmTotalNum = data.length;
                showAlarmIndexNo(0);//设置显示第0条

                initRecordData(data);//格式化报警记录数据

                $("#oneAdasAlarmData").datagrid('loadData', data);//绑定数据

                //获取所有记录的附件信息
                getAdasAttachmentDatas2(data);//获取附件信息，并且解除遮罩
                
                Utility.hideLoading();//隐藏遮罩
                // showFirstRow();//设置并显示第一条
            } else {
                //没有报警记录信息
                showMsg("当前报警记录数量为0");
                Utility.hideLoading();//隐藏遮罩
                hideProg();
            }
            
        }
        
    });
}

//格式化数据，定义保存图片的数组
function initRecordData(recordData){
    if(recordData != null && recordData.length > 0){
        for(var i=0 ; i<recordData.length ; i++){
            recordData[i].imgs= new Array();//存放图片信息
            recordData[i].uploadedNum = 0;//已上传数量
        }
    }
}

/*
请求所有记录的有效附件信息,一次性获取所有附件信息
    1.获取所有的记录
    2.通过alarmNo请求附件信息
    3.获取到数据后存入变量
    4.解除遮罩
*/
function getAdasAttachmentDatas(recordData){
    showMsg("正在请求报警附件详细信息...");
    //定义参数链表
    var alarmNoList = new Array();
    if(recordData.length > 0){
        for (var i = 0; i < recordData.length; i++) {
            if (alarmNoList.indexOf(recordData[i].alarmNo) <= -1) {
                alarmNoList.push(recordData[i].alarmNo);
            }
        }
    }

    params = {};
    params.alarmNoList = alarmNoList;
    // console.log(params);
    var url = "<%=ApplicationPath%>/alarmImage/getOneAdasAttachments.action";//请求地址
    //请求数据
    Utility.getAjaxData(url,JSON.stringify(params),function(data){
        //数据请求成功，把数据分类存储到各自的报警记录下
        pushAttachments(recordData,data);

        showMsg("请求报警附件详细信息成功！");//显示提示消息
        showFirstRow();//设置并显示第一条
        Utility.hideLoading();//隐藏遮罩

        // console.log("接收到所有记录附件数据");
        // console.log(data);
    });
}

/*
请求所有附件信息
通过定时器的方式，每条请求一次
    1.设置定时器
    2.定时器方法中：
        2.1首先设置参数
        2.2查询，等待结果，显示信息
        2.3有结果后，存入数据变量，更新显示信息

*/
function getAdasAttachmentDatas2(recordData){
    
    var cout = 0;
    var url = "<%=ApplicationPath%>/alarmImage/getAdasAlarmImgsData.action";//请求地址
    var length = recordData.length;
    //定义定时器
    $("body").everyTime("10ms",timerName,function(){
        try {
            // console.log("定时器执行查询");
            params = {};
            // var alarmNoList = new Array();

            if (cout < length) {
                //测试输出
                showMsg("开始获取第" + cout + "条报警记录的附件信息...");
                // console.log("正在获取第" + cout + "条报警记录的附件信息...");

                //如果存在记录没有处理完
                params.alarmNo = recordData[cout].alarmNo;
                // alarmNoList.push(recordData[cout].alarmNo);//设置参数
                // params.alarmNoList = alarmNoList;
                cout++;

                var num = parseInt(cout * 100 / length);//设置进度条百分比
                setProg(num);


                //请求附件信息
                Utility.getAjaxData(url, JSON.stringify(params), function (data) {
                    //数据请求成功，把数据分类存储到各自的报警记录下
                    pushAttachments(recordData, data);
                    if (cout == 1) {
                        showFirstRow();//设置并显示第一条
                    }
                    // console.log("接收数据时count=" + cout);
                });
            } else {
                $("body").stopTime(timerName);
                showMsg("获取全部附件信息完成！")
                hideProg();
                showFirstRow();//设置并显示第一条
            }//end cout
        } catch (error) {
            console.error("定时器获取附件错误" + error);
        }
        
    });
}


/*
向数据中添加附件信息数据
*/
function pushAttachments(recordData,imgsData){
    // showMsg("正在格式化附件信息数据...");
    try {
        //1.遍历附件链表，查找到信息，加入
        if (imgsData != null && recordData != null && imgsData.length > 0 && recordData.length > 0) {
            //遍历附件表
            for (var i = 0; i < imgsData.length; i++) {
                var temp = imgsData[i];//
                //遍历记录表
                for (var j = 0; j < recordData.length; j++) {
                    if (recordData[j].alarmNo == imgsData[i].alarmNo) {
                        //alarmNo相同，
                        recordData[j].imgs.push(imgsData[i]);
                        if (isImgs(imgsData[i])) {//判断是否为可显示有效附件
                            // console.log("有效附件");
                            recordData[j].uploadedNum = recordData[j].uploadedNum + 1;//已上传数据数量加一
                            console.log("添加第"+j+"条报警记录的附件信息");
                        }
                        continue;//本次操作结束
                    }
                }//end for recordData
            }//end for imgsData

            //重新加载数据
            $("#oneAdasAlarmData").datagrid('loadData', recordData);//绑定数据
        }
    } catch (error) {
        console.error("加载附件信息出错："+error);
    }
    
    // showMsg("格式化附件信息完成！");
    //输出数据
    // console.log("处理完成数据");
    // console.log(recordData);
}


//判断该附件是否是有效的可以显示的附件
function isImgs(imgData){
    //附件类型为0（图片）或 2（视频），同时附件状态为已上传
    if((imgData.fileType == 0 || imgData.fileType ==2)&& imgData.status == "uploaded"){
        return true;
    }else{
        return false;
    }
}

//////////////////////////////
//////////////////////////////
//////////////////////////////实现功能所需方法
//显示提示信息
function showMsg(msg){
    $("#oneAdasAlarmMsg").html(msg);
}

/*
显示当前条数和总条数
0.默认值为0
1.获取详细信息数据后，首先设置alarmTotalNum的值，然后再进行绑定等操作
1.首次加载数据后调用
2.每次点击显示选中行数据时，同时更新条数
*/
function showAlarmIndexNo(rowIndex){
    $("#alarmIndexNoSpan").html(rowIndex+1);
    $("#alarmTotalNumSpan").html(alarmTotalNum);
}




///////////////////////////
///////////////////////////进度条控制
///////////////////////////


//显示进度条
function showProg(){
    $("#ProgSpan").show();
    setProg(0);
}

//进度条设置并显示进度
function setProg(value){
    
    $("#myProg").val(value);
    $("#myProgMsg").html(value+"%");
}

//隐藏进度条
function hideProg(){
    $("#ProgSpan").hide();
}




//显示基本信息到页面
function showBasicInfoToTop(){
    if(adasAlarmBasicInfo != null){
        $("#spanPlateNo").html(adasAlarmBasicInfo.plateNo);
        var oneAlarmData = Utility.getOneAlarmSourceData(adasAlarmBasicInfo.alarmSource,adasAlarmBasicInfo.alarmType);
        if(oneAlarmData != null){
            adasAlarmBasicInfo.alarmSourceName = oneAlarmData.alarmSourceName;//添加报警来源数据
            adasAlarmBasicInfo.alarmTypeName = oneAlarmData.alarmTypeName;//添加报警类型数据
            $("#spanAlarmSource").html(oneAlarmData.alarmSourceName);
            $("#spanAlarmType").html(oneAlarmData.alarmTypeName);
        }
    }
}



//格式化列表显示时间
function formatAlarmTime(value, rowData, rowIndex){
    try {
        var html = '<a href="javascript:showDetailsMsg();">'+Utility.getTimeTime(value)+'</a>';
        return html;
    } catch (error) {
        console.error("格式化时间出错:"+error);
    }
    
}

//author:shinion
//date:2019-01-03 16:25
//修改样式，暂时不使用，等待删除
//格式化详细信息
function formatDetails(value,rowData,rowIndex){
    var html = '<a href="javascript:showDetailsMsg()">查看</a>';
    return html;
}

//格式化处理方式
function formatProcessType(value,rowData,rowIndex){
    var html = "";
    if(value == 0){
        html='<span  style="color:red;">'+getProcessedTypeName(value)+'</span>';
    }else{
        html='<span style="color:blue;">'+getProcessedTypeName(value)+'</span>';
    }
    return html;
}

//格式化已上传数量
function formatUploadedNum(value,rowData,rowIndex){
    if(value >0){
        return '<span style="color:blue;">'+value+'</span>';
    }else{
        return value;
    }
}


///////////////////////////////////////
/////////////////////////////////////////显示单条报警记录详细信息
///////////////////////////////////////
/*
显示单条报警记录详细信息
*/
function showDetailsMsg(){
    var rowData = $("#oneAdasAlarmData").datagrid("getSelected");
    var rowIndex = $("#oneAdasAlarmData").datagrid("getRowIndex",rowData);
    showMsg("正在查看第"+(rowIndex+1)+"条报警记录信息");
    if(rowData != null){
        //获取图片数据并显示
        showOneRecordImgs(rowData);

        //显示报警信息窗口到地图
        showVehicleOnmap(rowData);

        // var width = $("#imgsDiv").css("width");
        // width = parseInt(width);
        // console.log(width);
        showAlarmIndexNo(rowIndex);//显示底部条数更新信息
    }
    
    //   console.log("显示信息");
    // console.log(rowData);
}
/*
显示单条报警记录数据到底部数据栏
显示数据：
报警时间，处理结果，处理时间，操作人员，备注
车速，经度，纬度，海拔，通讯号，报警地点
*/
function showOneRecordToBottom(rowData){
    if(rowData != undefined && rowData != null){
        try {
            //处理数据
            var processedTime = (rowData.processedTime == undefined?"空":rowData.processedTime);
            var processedUserName= (rowData.processedUserName == undefined?"空":rowData.processedUserName);
            var processedRemarks= (rowData.processedRemarks == undefined?"空":rowData.processedRemarks);
            // console.log("rowData");
            // console.log(rowData);
            var html = '<td style="width:35%;">';
            html += '<span>报警时间：&nbsp;&nbsp;&nbsp;' + rowData.alarmTime + '</span><br/>';//第一列
            html += '<span>处理结果：&nbsp;&nbsp;&nbsp;' + getProcessedTypeName(rowData.processed) + '</span><br/>';
            html += '<span>处理时间：&nbsp;&nbsp;&nbsp;' + processedTime  + '</span><br/>';
            html += '<span>操作人员：&nbsp;&nbsp;&nbsp;' + processedUserName + '</span><br/>';//第一列
            html += '<span>处理备注：&nbsp;&nbsp;&nbsp;' + processedRemarks + '</span><br/>';
            html += '</td><td>';
            html += '<span>车速：&nbsp;&nbsp;' + rowData.speed + '</span><br/>';//第二列
            html += '<span>经度：&nbsp;&nbsp;' + rowData.longitude + '</span><br/>';//第二列
            html += '<span>纬度：&nbsp;&nbsp;' + rowData.latitude + '</span><br/>';//第二列
            html += '<span>海拔：&nbsp;&nbsp;' + rowData.altitude + '</span><br/>';//第二列
            html += '<span>通讯号：&nbsp;&nbsp;' + rowData.simNo + '</span><br/>';//第二列
            html += '<span>报警地点：&nbsp;&nbsp;' + rowData.location + '</span><br/>';//第二列
            html += '</td>';
            // $("#showDataTr").html(html);
        } catch (error) {
            console.error("显示单条记录数据错误：" + error);
        }
    }else{
        console.error("显示单条报警记录数据到底部数据栏，数据未定义"+error);
    }
    
    
}


//根据处理方式数值获取描述
function getProcessedTypeName(value){
    var html = "未处理";
    var processTypeListTemp = window.localStorage.getItem("alarmProcessedData");
    processTypeListTemp = JSON.parse(processTypeListTemp);
    //查找处理描述
    if (processTypeListTemp != null) {
        for (var i = 0; i < processTypeListTemp.length; i++) {
            if (processTypeListTemp[i].code == value) {
                html = processTypeListTemp[i].name;
                break;
            }
        }
    }
    return html;
}


/*
加载列表中的数据信息到右侧图片显示区域
    1.图片信息从行数据中获取，
    2.显示所有信息
 */
function showOneRecordImgs(rowData){
    try {
        // console.log("显示附件信息");
        // console.log(rowData);

        //初始化控件，清空
        $("#imgsTable").empty();

        var width =parseInt($("#imgsDiv").css("width"));//获取控件宽度
        var widthCout = Math.floor(width/350);
        //  console.log("单行数量为："+widthCout);

        var cout = 0;//标记添加数量
        if (rowData.imgs.length > 0) {
            var html = '<tr>';//开始添加行
            //遍历数据
            for (var i = 0; i < rowData.imgs.length; i++) {
                if (isImgs(rowData.imgs[i])) {
                    cout++;//标记开始添加第几个附件
                    //显示有效数据
                    if (rowData.imgs[i].fileType == 0) {
                        //图片信息
                        var temp = addImgTd(rowData.imgs[i]);
                        html += temp;
                    }
                    if (rowData.imgs[i].fileType == 2) {
                        //视频信息
                        var temp = addVedioTd(rowData.imgs[i]);
                        html += temp;
                    }
                    if (cout % widthCout == 0) {//三个一排
                        html += '</tr><tr>';//换行
                    }
                }
            }
            html += '</tr>';
            $("#imgsTable").html(html);
        }
    } catch (error) {
        console.error("加载图片信息错误：" + error);
    } 
}

/*
显示图片视频列表到右侧区域
    1.判断是正常数据
*/


/*
添加图片区域
*/
function addImgTd(oneData){
    var strTemp = '<%=ApplicationPath%>/adasAttachment/'+getFileDate(oneData.updateDate)+'/'+oneData.fileName;
	strTemp = '<td class="imgDiv"><img src="'+strTemp+'"></td>';
    return strTemp;
}

/*
添加视频区域
*/
function addVedioTd(oneData){
    var strTemp = '<%=ApplicationPath%>/adasAttachment/'+getFileDate(oneData.updateDate)+'/'+oneData.fileName;
	strTemp = '<td style="text-align:center;"><video src="'+
            strTemp + '" type="video/mp4" width="350" height="210" controls="controls" autoplay="autoplay"><video></td>';
    return strTemp;
}

//根据文件路径获取日期目录
function getFileDate(updateDate){
	var arrayTemp = updateDate.split(" ");
	return arrayTemp[0];
}




///////////////////////////////
/////////////////////////////////按钮事件定义
///////////////////////////////

/*
显示单条记录的信息在小地图上
1.获取选中的记录
2.显示信息
*/
function showMsgOnMap(){
    var rowData = $("#oneAdasAlarmData").datagrid("getSelected");
    if(rowData != null){
        showVehicleOnmap(rowData);
    }
}


//显示报警详细数据
function showAdasAlarmProcessedInfo() {
    try {
        //加载数据
        layer.open({
            title: '详细信息',
            type: 2,
            area: ['620px', '380px'],
            fixed: false, //不固定
            maxmin: false,
            content: '<%=ApplicationPath%>/adasAlarm/viewAdasAlarmProcessedInfo.action',
            cancel: function () {
                // layer.msg('没有进行任何操作就关闭');
            }
        });
    } catch (error) {
        console.error("显示报警详细信息错误:" + error);
    }
}


//显示第一行
function showFirstRow(){
    $("#oneAdasAlarmData").datagrid("selectRow", 0);
    showDetailsMsg();//显示信息
}

//选中上一行或者下一行，变量1为下一行，变量-1为上一行
function showNextRow(flg){
   try {
      // console.log("获取下一行");
        var myDatagrid = $("#oneAdasAlarmData");
        //获取总条数
        var length = 0;
        var rowsData = myDatagrid.datagrid("getRows");
        // console.log(rowsData);
        if (rowsData != null) {
            length = rowsData.length;
            // console.log("length="+length);
        }

        //获取当前行
        var rowDataTemp = myDatagrid.datagrid("getSelected");
        // console.log(rowDataTemp);
        var indexTemp = myDatagrid.datagrid("getRowIndex", rowDataTemp);
        indexTemp += flg;//修改索引

        //如果下一行大于等于总条数，那么选中第0 行
        if (indexTemp >= length)
            indexTemp = 0;
        if (indexTemp <= -1)//如果上一行小于0，那么选中最后一行
            indexTemp = length - 1;
        // console.log("下一条的索引="+indexTemp);
        myDatagrid.datagrid("selectRow", indexTemp);
        showDetailsMsg();//显示信息

    } catch (error) {
        console.error("获取选中行错误：" + error);
    }
}


////////////////////////////
////////////////////////////处理方法
////////////////////////////

//获取并设置基本的参数，包括车辆列表；alarm表中的报警id列表，总索引；adas报警信息ids
function getBasicProcessedParam(){
    var vehicleIds = new Array();
    vehicleIds.push(adasAlarmBasicInfo.vehicleId);
    $("#formVehicleIds").val(vehicleIds);//车辆id列表

    var alarmIds = new Array();
    alarmIds.push(adasAlarmBasicInfo.id);
    $("#formAlarmIds").val(alarmIds);//alarm表中报警id列表，总索引
    
    var rowDatas = $("#oneAdasAlarmData").datagrid("getChecked");
    console.log(rowDatas);
    var adasAlarmIds = new Array();
    if (rowDatas != null && rowDatas.length > 0) {
        for (var i = 0; i < rowDatas.length; i++) {
            if(rowDatas[i].processed == 0 ){//如果数据未处理，则加入，处理过的不加入
                adasAlarmIds.push(rowDatas[i].id);
            }   
        }
    }

    if(adasAlarmIds.length <= 0){
        layer.msg("至少选择一条未处理的报警记录进行处理");
        showMsg("至少选择一条报警记录进行处理");
        return false;
    }
    $("#formAdasAlarmIds").val(adasAlarmIds);//adas报警ids
    //测试，输出参数
    console.log($("#formVehicleIds").val());
    console.log($("#formAlarmIds").val());
    console.log($("#formAdasAlarmIds").val());
    console.log($("#formParam1").val());
    console.log($("#formParam2").val());
    return true;
}


//报警按钮处理点击事件
//原报警解除现改为报警处理，所以借用原报警解除action和页面
//备注：author：shinion date：2019-01-05
function processedAlarmClick(){
    layer.open({
        title:'报警处理',
        type: 2,
        area: ['530px', '305px'],
        fixed: false, //不固定
        // offset:['150px','450px'],
        maxmin: false,
        content: '<%=ApplicationPath%>/adasAlarmsRelease/getView.action',
        cancel: function () {
            // layer.msg('没有进行任何操作就关闭');
        }
    });
}

/*
报警处理命令下发
接口方法
    1，首先设置命令参数
    2.如果参数设置校验成功，则下发命令，等待回应，输出命令执行结果
    3.如果参数设置校验失败，输出提示，不进行下一步命令
*/
function processedAlarmAction(flg){
    try {
        if (formatProcessedParams(flg)) {
            showMsg("正在进行报警处理命令下发...");
            $("#processedForm").ajaxSubmit(function (data) {
                if (data.success) {
                    Utility.hideLoading();//解除遮罩
                    //重新更新数据
                    getOneAdasAlarmBasicInfo();
                    getAdasAlarmRecords();

                    //更新报警数据行信息
                    try {
                        var objTemp = parent.AlarmGrid;
                        if (objTemp) {
                            objTemp.getAlarmPageData();
                        }
                    } catch (error) {
                        console.error("oneAdasAlarmInfo-->更新主页面报警数据错误!")
                    }
                } else {
                    showMsg(data.message);
                }
                // console.log(data);
            });
            showMsg("发送命令完成");
        }else{
            //设置参数失败
            console.error("报警处理中设置命令参数失败!");
        }    
    } catch (error) {
        console.error("发送报警处理命令错误：" + error);
    }
}
/*
格式化报警参数
    根据情况对参数进行设置，
    1.如果参数为"send"，则为发送文本处理方式，设置参数名称和对应请求路径为sendText类型
    2.如果参数为"processed",则为解除报警处理方式，设置参数名称和对应路径为releaseAlarm类型
*/
function formatProcessedParams(flg){
    try {
        if (flg == "send") {
            //发送文本方式
            //定义action
            $("#processedForm").attr("action", "<%=ApplicationPath%>/sendText/sendAdasAlarms.action");
            //初始化参数
            $("#formParam1").attr("name", "textContent");//定义第一参数名
            $("#formParam2").attr("name", "displayOption");//定义第二参数名

            return getBasicProcessedParam();
        } else if (flg == "processed") {
            //解除报警方式
            //定义action
            $("#processedForm").attr("action", "<%=ApplicationPath%>/adasAlarmsRelease/releaseAlarms.action");
            //初始化参数
            $("#formParam1").attr("name", "processedRemark");//定义第一参数名,备注：（处理方式和处理描述，）
            return getBasicProcessedParam();
        }
    } catch (error) {
        console.error("格式化报警处理参数错误："+error);
        return false;
    }
    
}


/*
author:shinion
date:2019-01-08
查看实时视频
*/
function openPupVideoWindow(){
    try {
        var rowsData = $("#oneAdasAlarmData").datagrid("getRows");
        // console.log("rowsData");
        // console.log(rowsData);
        if(rowsData != null && rowsData.length > 0){
            var rowTemp = rowsData[0];
            // console.log("rowTemp");
            // console.log(rowTemp);
            window.parent.InfoWindow.viewRealTimeVideo(rowTemp.vehicleId,rowTemp.plateNo,rowTemp.simNo);
        }else{
            layer.msg("缺少参数，无法打开视频，请重试！");
        }
    } catch (error) {
        console.error("查看视频错误："+error);
    }
  
}




/*
保存证据
1.获取所有选中的报警记录，设置参数alarmNoList列表
2.获取报警来源，报警类型，第一个报警的时间，报警记录个数
3.发送请求，等待返回数据
4.如果返回成功信息，则根据返回的路径，下载zip包
5.如果返回错误信息，则显示错误的信息
*/
function getZipFile(){
    try {
        showMsg("开始进行证据保存,请稍后...");
        console.log("开始进行证据保存")
        var param = getZipParams();
        console.log(param);
        if (param != null) {
            if (param.alarmNoList.length > 0) {
                //参数不为空
                var url = "<%=ApplicationPath%>/adasAlarm/getZip.action";
                Utility.getAjaxData(url, JSON.stringify(param), function (data) {
                    console.log("证据保存数据");
                    console.log(data);
                    if (data.success) {
                        //服务器打包成功
                        showMsg("服务器打包成功，开始下载压缩文件");
                        //请求成功，则开始下载数据
                        downloadZipFile(data.data[0]);

                    } else {
                        //请求失败，显示失败信息
                        showMsg(data.message);
                    }
                });
            } else {
                layer.msg("至少选择一条记录进行证据保存操作");
            }
        }else{
            showMsg("证据保存错误，请重新尝试");
        }        
    } catch (error) {
        console.error("获取证据错误：" + error);
    }
    
}

/*
获取证据功能中获取相关参数，用于请求action
1.获取车牌号，报警来源，报警类型，第一条记录的报警时间（最新时间），报警记录数量
2.报警信息列表:alarmNoList
3.
*/
function getZipParams(){
    var param = {};//定义参数
    try {
        param.plateNo = adasAlarmBasicInfo.plateNo;//车牌号
        param.alarmSourceName = adasAlarmBasicInfo.alarmSourceName;//报警来源
        param.alarmTypeName = adasAlarmBasicInfo.alarmTypeName;//报警类型


        var alarmNoList = new Array();
        var rowDatas = $("#oneAdasAlarmData").datagrid("getChecked");
        // console.log(rowDatas);
        var adasAlarmIds = new Array();
        if (rowDatas != null && rowDatas.length > 0) {
            param.alarmCount = rowDatas.length;//需要打包的报警记录的数量
            
            for (var i = 0; i < rowDatas.length; i++) {
                if (i == 0) {
                    param.alarmTime = Utility.getTimeFilePathStr(rowDatas[i].alarmTime);//第一条报警记录的报警时间,转换为文件合法字符串
                }
                //获取alarmNo列表
                alarmNoList.push(rowDatas[i].alarmNo);
            }
            
        }
        //存入参数
        param.alarmNoList = alarmNoList;
        // console.log("获取参数完成")
        return param;//返回参数
    } catch (error) {
        console.error("获取证据功能->获取参数失败：" + error);
        return null;
    }
}

//根据文件路径，下载文件
function downloadZipFile(fileName){
    try {
        var filePath = "<%=ApplicationPath%>/zip/"+fileName+".zip";
        var downloadName = fileName +".zip";
        // console.log("文件路径为："+filePath);
        // console.log("下载文件名为："+fileName);
        var html = '<a href="'+filePath+'" download="'+downloadName+'"><span id="downloadZipTemp">下载</span></a>';
        // layer.msg(html);
        $("#downloadZipSpanA").html(html);
        $("#downloadZipTemp").click();
    } catch (error) {
        console.error("下载压缩文件错误：" + error);
    } 
}


var doResize = function(){
    console.log("主动安全单条报警详细信息查询页面大小改变......");
}

</script>

</head>
<body onresize="javascript:doResize();">
    <!--数据表格-->
    <table class="TableBlock" style="height:100%;width:100%;"><tbody>
        <tr>
            <!--地图区域，占据三行-->
            <td rowspan="3" class="mapDiv">
                <div id="mapDiv" style="width:100%;height:100%;">
                
                </div>
            </td>
            <!--中间上侧信息显示-->
            <td class="topMsg">
                <div style="height:100%;">
                    车牌号：<span id="spanPlateNo"></span>&nbsp;&nbsp;&nbsp;&nbsp;
                    报警来源：<span id="spanAlarmSource"></span>&nbsp;&nbsp;&nbsp;&nbsp;
                    报警类型：<span id="spanAlarmType"></span>&nbsp;&nbsp;&nbsp;&nbsp;
                    提示：<span id="oneAdasAlarmMsg" style="color:red;"></span>
                    <span id="ProgSpan"><progress id="myProg" max="100" value="30"></progress><span id="myProgMsg">30%</span></span>
                
                </div>
            </td>
            <!--右侧上层，显示数据-->
            <td rowspan="2" class="rightTop">
                <table id="oneAdasAlarmData">
                    <thead>
                        <tr>
                            <th data-options="field:'id',checkbox:true"><input type='checkbox' id='selectAll'></input></th>
                            <th data-options="field:'alarmTime',formatter:formatAlarmTime" width="85">报警时间</th>
                            <th data-options="field:'processed',formatter:formatProcessType" width="75">处理状态</th>
                            <th data-options="field:'uploadedNum',formatter:formatUploadedNum" width="65">附件数</th>
                        </tr>
                    </thead>
                </table>
            </td>
        </tr>
        <tr>
            <!--中间区域，显示附件信息-->
            <td style="text-align:center;">
                <div id="imgsDiv" class="imgsMiddle">
                    <table>
                        <tbody id="imgsTable">
                        </tbody>
                    </table>
                </div>
            </td>
        </tr>
        <tr>
            <td colspan="2" class="btnTd">
                <span style="float:left;">
                    <input type="button" onclick="javascript:showMsgOnMap();" value="位置"/>
                    <input type="button" onclick="javascript:showAdasAlarmProcessedInfo();" value="详细信息"/>
                    <input type="button" onclick="javascript:getZipFile();" value="证据保存"/>
                    <input type="button" onclick="javascript:processedAlarmClick();" value="报警处理" />
                    <input type="button" onclick="javascript:openPupVideoWindow();" value="打开视频"/>
                </span>
                <span style="float: right;">
                    <input type="button" onclick="showNextRow(-1)" value="上一条" />
                    <input type="button" onclick="showNextRow(1)" value="下一条" />
                    <span>第<span id="alarmIndexNoSpan">0</span>条/共<span id="alarmTotalNumSpan">0</span>条</span>
                    
                    <!--<input type="button" onclick="listenClick();" value="监听" />-->
                    <!--<input type="button" onclick="sendTextClick();" value="文本下发" />-->
                    
                </span>

            </td>
        </tr>

    </tbody></table>
    <!--报警处理事件用form-->
    <form id="processedForm" name="processedForm" method="POST">
        <input id="formVehicleIds" type="hidden" name="vehicleIds" value=""/><!--其他选中的车辆-->
        <input id="formAlarmIds" type="hidden" name="alarmIds" value=""/><!--adas报警索引id-->
        <input id="formAdasAlarmIds" type="hidden" name="adasAlarmIds" value=""/><!--adas报警索引alarmIndex-->
        <input id="formParam1" type="hidden" name="" value=""/><!--根据需要设定的临时参数1-->
        <input id="formParam2" type="hidden" name="" value=""/><!--根据需要设定的临时参数2-->
    </form>
    <form id="getZipForm" name="getZipForm" method="POST">
        <input type="hidden" id="zipId" name="zipId" value="10001"/>
        <input type="hidden" id="zipName" name="zipName" value="myZip"/>
    </form>
    <!--<a id="downloadZipA" style="display:none;" href="#" download=""><span id="downloadZipSpan">证据保存</span></a>-->
    <span id="downloadZipSpanA" style="display:none" ></span>
</body>
